<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script type="text/javascript">
    /*
     *相等运算符用来比较两个值是否相等
     *如果相等会返回true，否则返回false
     *使用==来做相等运算
     *当使用==来比较两个值时，如果值的类型不同
     *则会自动进行类型转换，将其转换为相同的类型
     */
    console.log(1 == 1);//true
    var a=10;
    console.log(a == 4);//false
    //相等运算符一边是字符串一边是Number
    console.log("1" == 1);//true
    console.log("123" == 321);//false
    //一边是字符串，一边是布尔值。判定方法是把布尔值和字符串都转换为Number，然后进行运算
    console.log(true == "1");//true
    //一边是null，一边是0。null不会转换为Number
    console.log(null == 0);//false

    //特别例子undefined衍生于null，所以这两个值做相等判断时，会返回true
    console.log(undefined == null);//true

    //NaN不和任何值相等，包括他本身
    console.log(NaN == NaN);//false
    console.log(NaN == 1);//false
    console.log(NaN == 0);//false

    /*判断b的值是否是NaN
     *因为NaN不喝任何值相等，所以console.log(NaN == NaN);是行不通的
     *可以通过isNaN()函数来判断一个值是否是NaN
     *如果是的话，就输出true；不是的话，就输出false
     */
     b=NaN;
     c=isNaN(b);
     console.log(c);
    
    /*不相等运算符
     *不相等用来判断两个值是否不相等，如果不相等返回true，否则返回false
     *使用 != 来做不相等运算
     *不相等运算符也会对变量进行自动的类型转换，然后按照不相等运算符规则运算
     */
    console.log(10 != 5);//true
    console.log(10 != 10);//false

    /*全等运算符
     *用来判断两个值是否全等，他和相等类似，不同的是他对类型不同的变量不会做类型转换
     *如果两个变量类型不同，直接返回fasle
     */
    console.log("123" == 123);//true
    console.log("123" === 123);//false
    console.log(null == undefined);//true
    console.log(null === undefined);//false
    /*不全等
     *用来判断两个值是否不全等，和不等类似，不同的是他不会对类型不同的变量进行类型转换
     *如果两个值的类型不同，直接返回true；如果类型相同，值不同，也返回true
     */
    console.log("1" !== 1);//true
    console.log("123" !== "321")//true
    console.log("123" !== "123")//false
    </script>
</head>
<body>
    
</body>
</html>